
/*
#ifndef _ATOMICTYPE_CPP
#define _ATOMICTYPE_CPP
*/
#include "stdafx.h"

#include "AtomicType.h"

/*
#ifndef _TYPE_CPP
#include "Type.cpp"
#endif
*/

Token::pointer AtomicType::applyArgument(Token::const_reference)  const{
	throw Type::exception("AtomicType::applyArgument( ). AtomicTypes do not take argument");
	}


AtomicType::AtomicType(const string& str):Type(str){}
AtomicType::AtomicType(const AtomicType& Ty):Type(Ty){}
AtomicType::~AtomicType(void){}


FreeTypeVariable::FreeTypeVariable(const string& ss):AtomicType(ss){ }
FreeTypeVariable::FreeTypeVariable(const FreeTypeVariable& FVT):AtomicType(FVT){ }
FreeTypeVariable::~FreeTypeVariable( void ){}
Token::pointer FreeTypeVariable::clone() const{return new FreeTypeVariable(*this);}

BoundedTypeVariable::BoundedTypeVariable(const string& ss):AtomicType(ss){ }
BoundedTypeVariable::BoundedTypeVariable(const BoundedTypeVariable& BTV):AtomicType(BTV){ }
BoundedTypeVariable::~BoundedTypeVariable( void ){ }
Token::pointer BoundedTypeVariable::clone( ) const{return new BoundedTypeVariable(*this);}

//#endif
